A server may provide various services that can be consumed via application programming interface (API) requests from applications running on client devices. However, the full set of services provided by the server may either not be documented or may only be partially documented in an API specification. Moreover, the services may change over time, with new services being added. Discovery of these services and how to instantiate them may be difficult in the absence of an accurate API specification.